\section{Introduction}

The lack of programmability of network devices such as switches and routers has been identified in the past []. A recent approach to programmable networks is the Software Defined Network (SDN) architecture. SDN consists in decoupling the control and data planes of a network. It relies on the fact that the simplest function of a switch is to forward packets according to a series of rules. This is the data plane and it is executed by the switch. However, the rules followed by the switch in order to perform the routing are managed by software. This is the control plane. One motivation of SDN is to keep the design of network devices simple. Another one is to provide a way to perform network tasks that could not be done without additional software. Developed applications can control the switches by running on top of a network operating system, which facilitates this communication.

OpenFlow [] was proposed to standardize the communication between the switches and the software based controller in a SDN architecture. The authors identify that it is difficult for the networking research community to test new ideas in current hardware. This happens because the source code of the devices can't be modified and that the network infrastructure has been ``ossified'' []. By identifying common features in Ethernet switches, the authors provide a standardized protocol to control the flow table of a switch through software. OpenFlow provides a mean to control a switch without requiring the vendors to expose the code of their devices.

OpenFlow was initially deployed in academic campus networks. Today, at least seven Universities have deployed OpenFlow in their networks. The goal of OpenFlow was to provide a platform that would allow to run experiments in production networks. However, industry has also embraced SDN and OpenFlow as a strategy to increase the functionality of the network while reducing costs and hardware complexity. The Open Networking Foundation (ONF) was founded in 2011 by Deutsche Telekom, Facebook, Google, Microsoft, Verizon, and Yahoo! to promote the implementation of SDN and OpenFlow based networks. Currently, ONF has 59 members including several major vendors. Davy et al. [] also report that at least 15 vendors have shown OpenFlow compliant switches and controllers.

On the other hand, some OpenFlow challenges must be addressed. The fact that the availability of the network depends on a single controller creates scalability and availability problems. There are security concerns regarding the fact that all the network information is contained in one single server. Also, interoperability in large scale deployments must also be taken in consideration.

In this paper we begin by giving a background of programmable networks in Section 2. We also explain the details of OpenFlow in Section 3. Then we survey the most relevant deployments of OpenFlow based networks in Section 4. Next, we present how the capabilities of OpenFlow have been exploited so far and what are the challenges faced by OpenFlow and SDN in Section 5. Finally, we discuss the future work in this research field in Section 6.
